home *** CD-ROM | disk | FTP | other *** search
/ PC World Komputer 2010 April / PCWorld0410.iso / hity wydania / Ubuntu 9.10 PL / karmelkowy-koliberek-desktop-9.10-i386-PL.iso / casper / filesystem.squashfs / usr / include / stdint.h < prev    next >
C/C++ Source or Header  |  2009-10-07  |  9KB  |  321 lines

  1. /* Copyright (C) 1997,1998,1999,2000,2001,2006 Free Software Foundation, Inc.
  2.    This file is part of the GNU C Library.
  3.  
  4.    The GNU C Library is free software; you can redistribute it and/or
  5.    modify it under the terms of the GNU Lesser General Public
  6.    License as published by the Free Software Foundation; either
  7.    version 2.1 of the License, or (at your option) any later version.
  8.  
  9.    The GNU C Library is distributed in the hope that it will be useful,
  10.    but WITHOUT ANY WARRANTY; without even the implied warranty of
  11.    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
  12.    Lesser General Public License for more details.
  13.  
  14.    You should have received a copy of the GNU Lesser General Public
  15.    License along with the GNU C Library; if not, write to the Free
  16.    Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  17.    02111-1307 USA.  */
  18.  
  19. /*
  20.  *    ISO C99: 7.18 Integer types <stdint.h>
  21.  */
  22.  
  23. #ifndef _STDINT_H
  24. #define _STDINT_H    1
  25.  
  26. #include <features.h>
  27. #include <bits/wchar.h>
  28. #include <bits/wordsize.h>
  29.  
  30. /* Exact integral types.  */
  31.  
  32. /* Signed.  */
  33.  
  34. /* There is some amount of overlap with <sys/types.h> as known by inet code */
  35. #ifndef __int8_t_defined
  36. # define __int8_t_defined
  37. typedef signed char        int8_t;
  38. typedef short int        int16_t;
  39. typedef int            int32_t;
  40. # if __WORDSIZE == 64
  41. typedef long int        int64_t;
  42. # else
  43. __extension__
  44. typedef long long int        int64_t;
  45. # endif
  46. #endif
  47.  
  48. /* Unsigned.  */
  49. typedef unsigned char        uint8_t;
  50. typedef unsigned short int    uint16_t;
  51. #ifndef __uint32_t_defined
  52. typedef unsigned int        uint32_t;
  53. # define __uint32_t_defined
  54. #endif
  55. #if __WORDSIZE == 64
  56. typedef unsigned long int    uint64_t;
  57. #else
  58. __extension__
  59. typedef unsigned long long int    uint64_t;
  60. #endif
  61.  
  62.  
  63. /* Small types.  */
  64.  
  65. /* Signed.  */
  66. typedef signed char        int_least8_t;
  67. typedef short int        int_least16_t;
  68. typedef int            int_least32_t;
  69. #if __WORDSIZE == 64
  70. typedef long int        int_least64_t;
  71. #else
  72. __extension__
  73. typedef long long int        int_least64_t;
  74. #endif
  75.  
  76. /* Unsigned.  */
  77. typedef unsigned char        uint_least8_t;
  78. typedef unsigned short int    uint_least16_t;
  79. typedef unsigned int        uint_least32_t;
  80. #if __WORDSIZE == 64
  81. typedef unsigned long int    uint_least64_t;
  82. #else
  83. __extension__
  84. typedef unsigned long long int    uint_least64_t;
  85. #endif
  86.  
  87.  
  88. /* Fast types.  */
  89.  
  90. /* Signed.  */
  91. typedef signed char        int_fast8_t;
  92. #if __WORDSIZE == 64
  93. typedef long int        int_fast16_t;
  94. typedef long int        int_fast32_t;
  95. typedef long int        int_fast64_t;
  96. #else
  97. typedef int            int_fast16_t;
  98. typedef int            int_fast32_t;
  99. __extension__
  100. typedef long long int        int_fast64_t;
  101. #endif
  102.  
  103. /* Unsigned.  */
  104. typedef unsigned char        uint_fast8_t;
  105. #if __WORDSIZE == 64
  106. typedef unsigned long int    uint_fast16_t;
  107. typedef unsigned long int    uint_fast32_t;
  108. typedef unsigned long int    uint_fast64_t;
  109. #else
  110. typedef unsigned int        uint_fast16_t;
  111. typedef unsigned int        uint_fast32_t;
  112. __extension__
  113. typedef unsigned long long int    uint_fast64_t;
  114. #endif
  115.  
  116.  
  117. /* Types for `void *' pointers.  */
  118. #if __WORDSIZE == 64
  119. # ifndef __intptr_t_defined
  120. typedef long int        intptr_t;
  121. #  define __intptr_t_defined
  122. # endif
  123. typedef unsigned long int    uintptr_t;
  124. #else
  125. # ifndef __intptr_t_defined
  126. typedef int            intptr_t;
  127. #  define __intptr_t_defined
  128. # endif
  129. typedef unsigned int        uintptr_t;
  130. #endif
  131.  
  132.  
  133. /* Largest integral types.  */
  134. #if __WORDSIZE == 64
  135. typedef long int        intmax_t;
  136. typedef unsigned long int    uintmax_t;
  137. #else
  138. __extension__
  139. typedef long long int        intmax_t;
  140. __extension__
  141. typedef unsigned long long int    uintmax_t;
  142. #endif
  143.  
  144.  
  145. /* The ISO C99 standard specifies that in C++ implementations these
  146.    macros should only be defined if explicitly requested.  */
  147. #if !defined __cplusplus || defined __STDC_LIMIT_MACROS
  148.  
  149. # if __WORDSIZE == 64
  150. #  define __INT64_C(c)    c ## L
  151. #  define __UINT64_C(c)    c ## UL
  152. # else
  153. #  define __INT64_C(c)    c ## LL
  154. #  define __UINT64_C(c)    c ## ULL
  155. # endif
  156.  
  157. /* Limits of integral types.  */
  158.  
  159. /* Minimum of signed integral types.  */
  160. # define INT8_MIN        (-128)
  161. # define INT16_MIN        (-32767-1)
  162. # define INT32_MIN        (-2147483647-1)
  163. # define INT64_MIN        (-__INT64_C(9223372036854775807)-1)
  164. /* Maximum of signed integral types.  */
  165. # define INT8_MAX        (127)
  166. # define INT16_MAX        (32767)
  167. # define INT32_MAX        (2147483647)
  168. # define INT64_MAX        (__INT64_C(9223372036854775807))
  169.  
  170. /* Maximum of unsigned integral types.  */
  171. # define UINT8_MAX        (255)
  172. # define UINT16_MAX        (65535)
  173. # define UINT32_MAX        (4294967295U)
  174. # define UINT64_MAX        (__UINT64_C(18446744073709551615))
  175.  
  176.  
  177. /* Minimum of signed integral types having a minimum size.  */
  178. # define INT_LEAST8_MIN        (-128)
  179. # define INT_LEAST16_MIN    (-32767-1)
  180. # define INT_LEAST32_MIN    (-2147483647-1)
  181. # define INT_LEAST64_MIN    (-__INT64_C(9223372036854775807)-1)
  182. /* Maximum of signed integral types having a minimum size.  */
  183. # define INT_LEAST8_MAX        (127)
  184. # define INT_LEAST16_MAX    (32767)
  185. # define INT_LEAST32_MAX    (2147483647)
  186. # define INT_LEAST64_MAX    (__INT64_C(9223372036854775807))
  187.  
  188. /* Maximum of unsigned integral types having a minimum size.  */
  189. # define UINT_LEAST8_MAX    (255)
  190. # define UINT_LEAST16_MAX    (65535)
  191. # define UINT_LEAST32_MAX    (4294967295U)
  192. # define UINT_LEAST64_MAX    (__UINT64_C(18446744073709551615))
  193.  
  194.  
  195. /* Minimum of fast signed integral types having a minimum size.  */
  196. # define INT_FAST8_MIN        (-128)
  197. # if __WORDSIZE == 64
  198. #  define INT_FAST16_MIN    (-9223372036854775807L-1)
  199. #  define INT_FAST32_MIN    (-9223372036854775807L-1)
  200. # else
  201. #  define INT_FAST16_MIN    (-2147483647-1)
  202. #  define INT_FAST32_MIN    (-2147483647-1)
  203. # endif
  204. # define INT_FAST64_MIN        (-__INT64_C(9223372036854775807)-1)
  205. /* Maximum of fast signed integral types having a minimum size.  */
  206. # define INT_FAST8_MAX        (127)
  207. # if __WORDSIZE == 64
  208. #  define INT_FAST16_MAX    (9223372036854775807L)
  209. #  define INT_FAST32_MAX    (9223372036854775807L)
  210. # else
  211. #  define INT_FAST16_MAX    (2147483647)
  212. #  define INT_FAST32_MAX    (2147483647)
  213. # endif
  214. # define INT_FAST64_MAX        (__INT64_C(9223372036854775807))
  215.  
  216. /* Maximum of fast unsigned integral types having a minimum size.  */
  217. # define UINT_FAST8_MAX        (255)
  218. # if __WORDSIZE == 64
  219. #  define UINT_FAST16_MAX    (18446744073709551615UL)
  220. #  define UINT_FAST32_MAX    (18446744073709551615UL)
  221. # else
  222. #  define UINT_FAST16_MAX    (4294967295U)
  223. #  define UINT_FAST32_MAX    (4294967295U)
  224. # endif
  225. # define UINT_FAST64_MAX    (__UINT64_C(18446744073709551615))
  226.  
  227.  
  228. /* Values to test for integral types holding `void *' pointer.  */
  229. # if __WORDSIZE == 64
  230. #  define INTPTR_MIN        (-9223372036854775807L-1)
  231. #  define INTPTR_MAX        (9223372036854775807L)
  232. #  define UINTPTR_MAX        (18446744073709551615UL)
  233. # else
  234. #  define INTPTR_MIN        (-2147483647-1)
  235. #  define INTPTR_MAX        (2147483647)
  236. #  define UINTPTR_MAX        (4294967295U)
  237. # endif
  238.  
  239.  
  240. /* Minimum for largest signed integral type.  */
  241. # define INTMAX_MIN        (-__INT64_C(9223372036854775807)-1)
  242. /* Maximum for largest signed integral type.  */
  243. # define INTMAX_MAX        (__INT64_C(9223372036854775807))
  244.  
  245. /* Maximum for largest unsigned integral type.  */
  246. # define UINTMAX_MAX        (__UINT64_C(18446744073709551615))
  247.  
  248.  
  249. /* Limits of other integer types.  */
  250.  
  251. /* Limits of `ptrdiff_t' type.  */
  252. # if __WORDSIZE == 64
  253. #  define PTRDIFF_MIN        (-9223372036854775807L-1)
  254. #  define PTRDIFF_MAX        (9223372036854775807L)
  255. # else
  256. #  define PTRDIFF_MIN        (-2147483647-1)
  257. #  define PTRDIFF_MAX        (2147483647)
  258. # endif
  259.  
  260. /* Limits of `sig_atomic_t'.  */
  261. # define SIG_ATOMIC_MIN        (-2147483647-1)
  262. # define SIG_ATOMIC_MAX        (2147483647)
  263.  
  264. /* Limit of `size_t' type.  */
  265. # if __WORDSIZE == 64
  266. #  define SIZE_MAX        (18446744073709551615UL)
  267. # else
  268. #  define SIZE_MAX        (4294967295U)
  269. # endif
  270.  
  271. /* Limits of `wchar_t'.  */
  272. # ifndef WCHAR_MIN
  273. /* These constants might also be defined in <wchar.h>.  */
  274. #  define WCHAR_MIN        __WCHAR_MIN
  275. #  define WCHAR_MAX        __WCHAR_MAX
  276. # endif
  277.  
  278. /* Limits of `wint_t'.  */
  279. # define WINT_MIN        (0u)
  280. # define WINT_MAX        (4294967295u)
  281.  
  282. #endif    /* C++ && limit macros */
  283.  
  284.  
  285. /* The ISO C99 standard specifies that in C++ implementations these
  286.    should only be defined if explicitly requested.  */
  287. #if !defined __cplusplus || defined __STDC_CONSTANT_MACROS
  288.  
  289. /* Signed.  */
  290. # define INT8_C(c)    c
  291. # define INT16_C(c)    c
  292. # define INT32_C(c)    c
  293. # if __WORDSIZE == 64
  294. #  define INT64_C(c)    c ## L
  295. # else
  296. #  define INT64_C(c)    c ## LL
  297. # endif
  298.  
  299. /* Unsigned.  */
  300. # define UINT8_C(c)    c
  301. # define UINT16_C(c)    c
  302. # define UINT32_C(c)    c ## U
  303. # if __WORDSIZE == 64
  304. #  define UINT64_C(c)    c ## UL
  305. # else
  306. #  define UINT64_C(c)    c ## ULL
  307. # endif
  308.  
  309. /* Maximal type.  */
  310. # if __WORDSIZE == 64
  311. #  define INTMAX_C(c)    c ## L
  312. #  define UINTMAX_C(c)    c ## UL
  313. # else
  314. #  define INTMAX_C(c)    c ## LL
  315. #  define UINTMAX_C(c)    c ## ULL
  316. # endif
  317.  
  318. #endif    /* C++ && constant macros */
  319.  
  320. #endif /* stdint.h */
  321.